/**
 *====================================================
 * 文件名称: UserActionApi.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年9月23日			chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.user.action.v1;

import java.util.List;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.user.action.v1.model.CurrentUserInfo;
import com.yuexunit.finance.user.action.v1.model.EmployeeRoleInfo;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/**
 * @ClassName: UserActionApi
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2015年9月23日 下午9:35:00
 */
public interface UserActionApi {
	
	@Permission
	@Action(version = FinVersion1.class, description = "注册终端设备号")
	public void registerTerminalAccount(
			@Parameter(name = "terminalSerial", description = "终端设备号") String terminalSerial
	);

	@Action(version = FinVersion1.class, description = "注册-注册企业帐号信息")
	@Parameter(name = "registerUuid", description = "注册企业校验码")
	public String registerEnterpriseAccount(
			@Parameter(name = "mobile", description = "验证手机号") String mobile
	);

	@Action(version = FinVersion1.class, description = "注册-提交注册验证码信息")
	public void validateEnterpriseRegisterUuid(
			@Parameter(name = "mobile", description = "验证手机号") String mobile,
			@Parameter(name = "authenticode", description = "验证码") String authenticode,
			@Parameter(name = "registerUuid", description = "校验码") String registerUuid
	);
	

	@Action(version = FinVersion1.class, description = "注册-提交设置密码")
	public void registerEnterprisePassword(
			@Parameter(name = "mobile", description = "注册手机号") String mobile,
			@Parameter(name = "authenticode", description = "验证码") String authenticode,
			@Parameter(name = "registerUuid", description = "校验码") String registerUuid,
			@Parameter(name = "password", description = "帐号密码") String password,
			@Parameter(name = "userId", description = "用户ID", nullable = true) String userId
	);

	@Action(version = FinVersion1.class, description = "找回密码-找回企业密码")
	@Parameter(name = "retrievePasswordUuid", description = "忘记密码校验码")
	public String retrieveEnterprisePassword(
			@Parameter(name = "mobile", description = "验证手机号") String mobile
	);

	@Action(version = FinVersion1.class, description = "找回密码-提交找回企业密码验证码信息")
	public void validateEnterpriseChangePasswordUuid(
			@Parameter(name = "mobile", description = "验证手机号") String mobile,
			@Parameter(name = "authenticode", description = "验证码") String authenticode,
			@Parameter(name = "retrievePasswordUuid", description = "校验码") String retrievePasswordUuid
	);

	@Action(version = FinVersion1.class, description = "找回密码-设置新密码")
	public void retrieveEnterpriseResetPasswordUuid(
			@Parameter(name = "mobile", description = "验证手机号") String mobile,
			@Parameter(name = "password", description = "新密码") String password,
			@Parameter(name = "authenticode", description = "验证码") String authenticode,
			@Parameter(name = "retrievePasswordUuid", description = "校验码") String retrievePasswordUuid
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "验证帐号密码")
	public void validateAccountPassword(
			@Parameter(name = "password", description = "帐号密码") String password
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "修改新手机号码")
	@Parameter(name = "changeMobileUuid", description = "手机号码修改校验码")
	public String changeEnterpriseAccountNewMobile(
			@Parameter(name = "password", description = "帐号密码") String password,
			@Parameter(name = "mobile", description = "新手机号码") String mobile
	);

	@Permission
	@Action(version = FinVersion1.class, description = "验证修改新手机号码")
	public void validateEnterpriseChangeMobileUuid(
			@Parameter(name = "password", description = "帐号密码") String password,
			@Parameter(name = "mobile", description = "新手机号码") String mobile,
			@Parameter(name = "authenticode", description = "验证码") String authenticode,
			@Parameter(name = "changeMobileUuid", description = "手机变更验证码") String changeMobileUuid
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "获取当前用户信息")
	public CurrentUserInfo inquireCurrentUserInfo();

	@Permission
	@Action(version = FinVersion1.class, description = "物流方重置密码")
	public void retrieveLogisticsResetPasswordUuid(@Parameter(name = "clerkId", description = "物流人员ID") Long clerkId);

	@Permission
    @Action(version = FinVersion1.class, description = "更新员工角色列表")
    public void updateEmployeeRole(
            @Parameter(description = "员工id", name = "employeeId") Long employeeId,
            @Parameter(description = "角色id", name = "roleId") List<Long> roleId
    );

	@Permission
    @Action(version = FinVersion1.class, description = "查询员工角色列表")
    public List<EmployeeRoleInfo> inquireEmployeeRoleList(
            @Parameter(description = "员工id", name = "employeeId") Long employeeId
    );
	
	@Action(version = FinVersion1.class, description = "判断该用户是否已注册")
	@Parameter(name = "isExisted", description = "是否已注册 0:未注册 1:已注册")
	public Integer existUser(
			@Parameter(name = "userId", description = "用户ID", nullable = true) String userId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "印章提交审核信息")
	@Parameter(name = "checkUuid", description = "审核校验码")
	public String sealSubmitCheckInfo(
			@Parameter(name = "mobile", description = "验证手机号") String mobile
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "校验印章提交审核验证码")
	public void validateSealSubmitCheckInfo(
			@Parameter(name = "mobile", description = "验证手机号") String mobile,
			@Parameter(name = "checkUuid", description = "验证码码") String checkUuid,
			@Parameter(name = "authenticode", description = "验证码") String authenticode
	);
}
